home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Online / RFCs / rfc / rfc1810.txt < prev    next >
Text File  |  1995-10-17  |  17KB  |  396 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7. Network Working Group                                           J. Touch
  8. Request for Comments: 1810                                           ISI
  9. Category: Informational                                        June 1995
  10.  
  11.  
  12.                        Report on MD5 Performance
  13.  
  14. Status of this Memo
  15.  
  16.    This memo provides information for the Internet community.  This memo
  17.    does not specify an Internet standard of any kind.  Distribution of
  18.    this memo is unlimited.
  19.  
  20. Abstract
  21.  
  22.    MD5 is an authentication algorithm, which has been proposed as the
  23.    default authentication option in IPv6.  When enabled, the MD5
  24.    algorithm operates over the entire data packet, including header.
  25.    This RFC addresses how fast MD5 can be implemented in software and
  26.    hardware, and whether it supports currently available IP bandwidth.
  27.    MD5 can be implemented in existing hardware technology at 256 Mbps,
  28.    and in software at 87 Mbps.  These rates cannot support current IP
  29.    rates, e.g., 100 Mbps TCP and 130 Mbps UDP over ATM.  If MD5 cannot
  30.    support existing network bandwidth using existing technology, it will
  31.    not scale as network speeds increase in the future.  This RFC is
  32.    intended to alert the IP community about the performance limitations
  33.    of MD5, and to suggest that alternatives be considered for use in
  34.    high speed IP implementations.
  35.  
  36. Introduction
  37.  
  38.    MD5 is an authentication algorithm, which has been proposed as one
  39.    authentication option in IPv6 [1].  RFC 1321 describes the MD5
  40.    algorithm and gives a reference implementation [3].  When enabled,
  41.    the MD5 algorithm operates over the entire data packet, including
  42.    header (with dummy values for volatile fields).  This RFC addresses
  43.    how fast MD5 can be implemented in software and hardware, and whether
  44.    it supports currently available IP bandwidth.
  45.  
  46.    This RFC considers the general issue of checksumming and security at
  47.    high speed in IPv6.  IPv6 has no header checksum (which IPv4 has
  48.    [5]), but proposes an authentication digest over the entire body of
  49.    the packet (including header where volatile fields are zeroed) [1].
  50.    This RFC specifically addresses the performance of that
  51.    authentication mechanism.
  52.  
  53.  
  54.  
  55.  
  56.  
  57.  
  58. Touch                        Informational                      [Page 1]
  59.  
  60. RFC 1810               Report on MD5 Performance               June 1995
  61.  
  62.  
  63. Measurements
  64.  
  65.    The performance of MD5 was measured.  The code was an optimized
  66.    version of the MD5 reference implementation from the RFC [3], and is
  67.    available for anonymous FTP [7].  The following are the results of
  68.    the performance test "md5 -t", modified to prohibit on-chip caching
  69.    of the data block:
  70.  
  71.         87 Mbps    DEC Alpha (190 Mhz)
  72.         33 Mbps    HP 9000/720
  73.         48 Mbps    IBM RS/6000 7006 (PPC 601 @80 Mhz)
  74.         31 Mbps    Intel i486/66 NetBSD
  75.         44 Mbps    Intel Pentium/90 NeXTStep
  76.         52 Mbps    SGI/IP-20 IRIX 5.2
  77.         37 Mbps    Sun SPARC-10/51, SPARC-20/50 SunOS 4.1.3
  78.         57 Mbps    Sun SPARC-20/71 SunOS 4.1.3
  79.  
  80.    These rates do not keep up with currently available IP bandwidth,
  81.    e.g., 100 Mbps TCP and 130 Mbps UDP over a Fore SBA-200 ATM host
  82.    interface in a Sun SPARC-20/71.
  83.  
  84.    Values as high as 100 Mbps have been reported for the DEC Alpha (190
  85.    Mhz).  These values reflect on-chip caching of the data.  It is not
  86.    clear at this time whether in-memory, off-chip cache, or on-chip
  87.    cache performance measures are more relevant to IP performance.
  88.  
  89. Analysis of the MD5 Algorithm
  90.  
  91.    The MD5 algorithm is a block-chained hashing algorithm.  The first
  92.    block is hashed with an initial seed, resulting in a hash.  The hash
  93.    is summed with the seed, and that result becomes the seed for the
  94.    next block.  When the last block is computed, it's "next-seed' value
  95.    becomes the hash for the entire stream. Thus, the seed for block
  96.    depends on both the hash and the seed of its preceding block.  As a
  97.    result, blocks cannot be hashed in parallel.
  98.  
  99.    Each 16-word (64-byte) block is hashed via 64 basic steps, using a
  100.    4-word intermediate hash, and collapsing the intermediate hash at the
  101.    end.  The 64 steps are 16 groups of 4 steps, one step per
  102.    intermediate hash word.  This RFC uses the following notation (as
  103.    from RFC-1321 [3]):
  104.  
  105.         A,B,C,D         intermediate hash words
  106.         X[i]            input data block
  107.         T[i]            sine table lookup
  108.         << i            rotate i bits
  109.         F               logical functions of 3 args
  110.  
  111.  
  112.  
  113.  
  114. Touch                        Informational                      [Page 2]
  115.  
  116. RFC 1810               Report on MD5 Performance               June 1995
  117.  
  118.  
  119.    The subscripts to X, I, and << are fixed for each step, and are
  120.    omitted here.  There are four different logical functions, also
  121.    omitted.  Each 4-step group looks like:
  122.  
  123.         A = B + ((A + F(B,C,D) + X[i] + T[i]) << i)
  124.         D = A + ((D + F(A,B,C) + X[i] + T[i]) << i)
  125.         C = D + ((C + F(D,A,B) + X[i] + T[i]) << i)
  126.         B = C + ((B + F(C,D,A) + X[i] + T[i]) << i)
  127.  
  128.    Note that this has the general form shown below. Due to the
  129.    complexity of the function 'f', these equations cannot be transformed
  130.    into a less serial set.
  131.  
  132.         A = f(D); B = f(A); C = f(B); D = f(C)
  133.  
  134.    Each steps is composed of two table lookups, one rotation, a 3-
  135.    component logical operation, and 4 additions.  The best
  136.    parallelization possible leaves F(x,y,z) to the last step, waiting as
  137.    long as possible for the result from the previous step.  The
  138.    resulting tree is shown below.
  139.  
  140.      (t0) B* C  C  D      X   T
  141.           |  |  |  |      |   |
  142.           |  |  |  |      |   |
  143.            \/    \/        \ /
  144.       t1   op    op   A     +                               X   T
  145.             \    /    \    /                                |   |
  146.              \  /      \  /                                 |   |
  147.               \/        \/                                   \ /
  148.       t2      op        +             (t0) B* C  C  D   A     +
  149.                \       /                   |  |  |  |    \    /
  150.                  \   /                      \ |  | /      \  /
  151.                   \ /                         \\//         \/
  152.       t3           +                   t1      op          +
  153.                    |                            \         /
  154.                    |                              \     /
  155.                    |                                \ /
  156.       t4           <<      B*          t2            +       B*
  157.                     \     /                           \     /
  158.                      \   /                             <<  /
  159.                       \ /                               \ /
  160.       t5               +               t3                +
  161.                        |                                 |
  162.                        |                                 |
  163.                        |                                 |
  164.                        A**                               A**
  165.  
  166.             Binary operation tree             Optimized hardware tree
  167.  
  168.  
  169.  
  170. Touch                        Informational                      [Page 3]
  171.  
  172. RFC 1810               Report on MD5 Performance               June 1995
  173.  
  174.  
  175.    This diagram assumes that each operation takes one unit time.  The
  176.    tree shows the items that depend on the previous step as B*, and the
  177.    item that the next step depends on as A**.  Sequences of the binary
  178.    operation tree cannot be overlapped, but the optimized hardware tree
  179.    can (by one time step).
  180.  
  181.    There are 4 steps processed per word of input, ignoring inter-block
  182.    processing.  The speed of the overall algorithm depends on how fast
  183.    we can process these 4 steps, vs.  the bandwidth of one word of input
  184.    being processed.
  185.  
  186.    The binary tree takes 5 time units per step of the algorithm, and
  187.    permits at best 3-way parallelism (at time t1).  In software, this
  188.    means it takes 5 * 4 = 20 instructions per word input.  A computer
  189.    capable of M MIPS can support a data bandwidth of M/20 * 32 Mbps,
  190.    i.e., bits per second equal to 1.6x its MIPS rate.  Therefore, a 100
  191.    MIPS machine can support a 160 Mbps stream.
  192.  
  193.         Parallel software rate in Mbps = 1.6 * MIPS rate
  194.  
  195.    This assumes that register reads and writes are overlapped with
  196.    computation entirely.  Without any parallelism, there are 8
  197.    operations per step, and 4 steps per word, so 32 operations per word,
  198.    i.e., the data rate in Mbps would be identical to the MIPS rate:
  199.  
  200.         Serial software rate in Mbps = MIPS rate
  201.  
  202.    Predictions using SpecInt92 numbers as MIPS estimators can be
  203.    compared with measured rates [2]:
  204.  
  205.      Spec-    Predicted      MD5
  206.      Int92   Upper-Bound   Measured      Machine
  207.    ------------------------------------------------------------
  208.      122       122-195     87 Mbps    DEC Alpha (190 Mhz)
  209.       48        48- 77     33 Mbps    HP 9000/720
  210.       88        88-141     48 Mbps    IBM RS/6000 7006 (PPC 601 @80 Mhz)
  211.       32        32- 51     31 Mbps    Intel i486/33 NetBSD
  212.       90        90-144     44 Mbps    Intel Pentium/90 NeXTStep
  213.       90        90-144     52 Mbps    SGI/IP-20 IRIX 5.2
  214.       65        65-104     37 Mbps    Sun SPARC-10/51 SunOS 4.1.3
  215.      126       126-202     57 Mbps    Sun SPARC-20/71 SunOS 4.1.3
  216.  
  217.    The hardware rate takes 3 time units per step, i.e.  3 * 4 = 12 time
  218.    units per word of input.  Hardware capable of doing an operation
  219.    (e.g., 32-bit addition) in N nanoseconds can support a data bandwidth
  220.    of 32/12/N bps, i.e., 2/3N bps.
  221.  
  222.         Hardware rate in Mbps = 8/3N * 1,000
  223.  
  224.  
  225.  
  226. Touch                        Informational                      [Page 4]
  227.  
  228. RFC 1810               Report on MD5 Performance               June 1995
  229.  
  230.  
  231.    For CMOS, an operation (32-bit addition, including register retrieval
  232.    and storage) costs about 5.2 ns (2.6 ns per add, 2 ns for latching)
  233.    [6].  There are 6 clocks through the most highly-parallelized
  234.    implementation, resulting in 31.2 ns per 32-bit word, or 256 Mbps
  235.    [6].  This will not keep pace with existing hardware, which is
  236.    capable of link speeds in excess of 622 Mbps (ATM).
  237.  
  238.    By comparison, IPv4 uses the Internet Checksum [5].  This checksum
  239.    can be performed in 32-bit-wide units in excess of 1 Gbps in an
  240.    existing, low-cost PLD.  The checksum can also be parallelized by
  241.    computing partial sums and reducing the result.
  242.  
  243. One Proposed Solution
  244.  
  245.    There are several ways to increase the performance of the IPv6
  246.    authentication mechanism.  One is to increase the hardware
  247.    performance of MD5 by slightly modifying the algorithm, the other is
  248.    to propose a replacement algorithm.  This RFC discusses briefly the
  249.    modification of MD5 for high-speed hardware implementation.
  250.    Alternate algorithms, capable of 3.5x the speed of MD5, have been
  251.    discussed elsewhere [6].
  252.  
  253.    MD5 uses block chaining to ensure sensitivity to block order.  Block
  254.    chaining also prevents arbitrary parallelism, which can be as much a
  255.    benefit to the spoofer as to the user.  MD5 can be slightly altered
  256.    to accommodate a higher bandwidth data rate.  There should be a
  257.    predetermined finite number of blocks processed from independent
  258.    seeds, such that the I-th block is part of the "I mod K"-th chain.
  259.    The resulting K digests themselves form a message, which can be MD5-
  260.    encoded using a single-block algorithm. This idea was proposed
  261.    independently by the author and by Burt Kaliski of RSA.
  262.  
  263.    The goal is to support finite parallelism to provide adequate
  264.    bandwidth at current processing rates, without providing arbitrary
  265.    power for spoofing.  It would require further analysis to ensure that
  266.    it provides an adequate level of security.
  267.  
  268.    For current technology and network bandwidth, a minimum of 4-way
  269.    parallel chaining would suffice, and 16-way chaining would be
  270.    preferable.  This would support network bandwidth of 1 Gbps with 4-
  271.    way chaining, in CMOS hardware.  The chaining parallelism should be a
  272.    multiple of 4-way, to generate a complete block of digests (4 words
  273.    per digest, 16 words per block).  This modification is believed to
  274.    achieve the goals of MD5, without the penalties of implementation of
  275.    the current MD5 algorithm.
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282. Touch                        Informational                      [Page 5]
  283.  
  284. RFC 1810               Report on MD5 Performance               June 1995
  285.  
  286.  
  287. Security Considerations
  288.  
  289.    This entire document addresses a mechanism for providing security in
  290.    IPv6.  MD5 is the proposed default optional authentication mechanism
  291.    for IPv6 traffic.  This RFC specifically addresses the concern that
  292.    security mechanisms such as MD5 that cannot support high bandwidth
  293.    with available hardware will compromise their deployment, and
  294.    ultimately, the security of the systems they are intended to
  295.    maintain.
  296.  
  297.    The IPv6 requirements document emphasizes that IPv6 implementations
  298.    should not compromise performance, compared to IPv4.  This is
  299.    presumably despite IPv6's increased functionality.  "Required
  300.    optional" components of IPv6 should be held to this same standard.
  301.    MD5 compromises performance, and so its use as a required default
  302.    option in IPv6 should be reconsidered.
  303.  
  304.    The use of MD5 as the default to the required authentication option
  305.    may compromise security in high-bandwidth systems, because enabling
  306.    the option causes performance degradation, defeating its inclusion as
  307.    an IPv6 option.  As a result, the authentication option may be
  308.    disabled entirely.
  309.  
  310.    It is important to the use of authentication in high-performance
  311.    systems that an alternative mechanism be available in IPv6 from the
  312.    outset.  This may require the specification of multiple "required"
  313.    authentication algorithms - one that's slower but believed strong,
  314.    and one that's faster but may inspire somewhat less confidence.
  315.  
  316. Conclusions
  317.  
  318.    MD5 cannot be implemented in existing technology at rates in excess
  319.    of 256 Mbps in hardware, or 86 Mbps in software.  MD5 is a proposed
  320.    authentication option in IPv6, a protocol that should support
  321.    existing networking technology, which is capable of 130 Mbps UDP.
  322.  
  323.    As a result, MD5 cannot be used to support IP authentication in
  324.    existing networks at existing rates.  Although MD5 will support
  325.    higher bandwidth in the future due to technological advances, these
  326.    will be offset by similar advances in networking.  If MD5 cannot
  327.    support existing network bandwidth using existing technology, it will
  328.    not be able to scale as network speeds increase in the future.  This
  329.    RFC proposes that MD5 be modified to support a 16-way block chaining,
  330.    in order to allow existing technology (CMOS hardware) to support
  331.    existing networking rates (1 Gbps).  It further proposes that
  332.    alternatives to MD5 be considered for use in high-speed networks.
  333.  
  334.  
  335.  
  336.  
  337.  
  338. Touch                        Informational                      [Page 6]
  339.  
  340. RFC 1810               Report on MD5 Performance               June 1995
  341.  
  342.  
  343. Acknowledgements
  344.  
  345.    The author would like to thank Steve Kent at BBN, Burt Kaliski,
  346.    Victor Chang, and Steve Burnett at RSA, Ran Atkinson at the NRL, and
  347.    the HPCC Division at ISI for reviewing the contents of this document.
  348.    Burt independently suggested the block-parallel modification proposed
  349.    here.
  350.  
  351. References
  352.  
  353.    [1] Atkinson, R., "IPv6 Authentication Header", Work in Progress,
  354.        Naval Research Lab, February 1995.
  355.  
  356.    [2] DiMarco, J., "Spec Benchmark table, V.  4.12",
  357.        <ftp://ftp.cfd.toronto.edu/pub/spectable>.
  358.  
  359.    [3] Rivest, R., "The MD5 Message-Digest Algorithm", RFC1321, MIT LCS
  360.        & RSA Data Security, Inc., April 1992.
  361.  
  362.    [4] Partridge, C., and F. Kastenholz, "Technical Criteria for
  363.        Choosing IP The Next Generation (IPng)", RFC 1726, BBN Systems
  364.        and Technologies, FTP Software, December 1994.
  365.  
  366.    [5] Postel, J., "Internet Protocol - DARPA Internet Program Protocol
  367.        Specification," STD 5, RFC 791, USC/Information Sciences
  368.        Institute, September 1981.
  369.  
  370.    [6] Touch, J., "Performance Analysis fo MD5," to appear in ACM
  371.        Sigcomm '95, Boston.
  372.  
  373.    [7] Touch, J., Optimized MD5 software, <ftp://ftp.isi.edu/pub/hpcc-
  374.        papers/touch/md5-opt.tar>.
  375.  
  376. Author's Address
  377.  
  378.    Joe Touch
  379.    Information Sciences Institute
  380.    University of Southern California
  381.    4676 Admiralty Way
  382.    Marina del Rey, CA 90292-6695
  383.    USA
  384.  
  385.    Phone: +1 310-822-1511 x151
  386.    Fax:   +1 310-823-6714
  387.    URL:   ftp://ftp.isi.edu/pub/hpcc-papers/touch
  388.    EMail: touch@isi.edu
  389.  
  390.  
  391.  
  392.  
  393.  
  394. Touch                        Informational                      [Page 7]
  395.  
  396.